//variables globales
var id_sumi;
var detalle_orden = new Array();
var detalles_consolidado = new Array();
var num_ordenes = 0;
var monto_redondeo = 0;
var MONTO_REDONDEO_MAX=0.05;
// fin variables globales


$(document).ready(function() {
	$("#ordenForm").validate({
		rules: {
				fecha_emision: {
					required: true,
					date:true
				},
				num_dias:{
					required: true,
					number:true
				},
				ruc_proveedor:"required",
				razon_proveedor:"required"
				
			},
			messages: {
				fecha_emision: {
					required: ""
				},
				num_dias: {
					required: "",
					number:""
				},
				ruc_proveedor:"",
				razon_proveedor:""
				
			}
	});
	
	// tooltips
	creaToolTips();
	// fin tooltips

	// botones
	Utiles_Botones.creaBotonAceptar("btn_pedido",enviaOrden);
	Utiles_Botones.creaBotonCerrar("btn_cerrarDialogConsolida",cierraDialogoConsolida);
	Utiles_Botones.creaBotonLimpiar("btn_pedido_limpiar",limpiaFormulario);
	Utiles_Botones.creaBotonPersonalizado("add_tool", "Atender Pedido", Utiles_Botones.ICON_ABRIR, false, showPedidosAceptados);
	Utiles_Botones.creaBotonPersonalizado("btn_consolida", "Consolidar Pedido", Utiles_Botones.ICON_AGREGAR, false, showPedidosConsolida);
	//Utiles_Botones.creaBotonPersonalizado("btn_consolida", "Consolidar Pedidos", Utiles_Botones.ICON_ABRIR, false, showPedidosAceptados);
	// fin botones

	// autocompletes
	$("#desc_proveedor").creaAutocompletable('get_proveedores',{id:"codProveedor",desc:"razon"},recibeProveedor,true,1 );
	// fin autocompletes

	$(".cambio_moneda").fadeOut("slow");
	// $("#monto_otros").keyup(sumaSubTotales);
	// eventos change
	$("#cmb_zona").change(llenarComboAlmacen);
	$("#cmb_almacen").change(llenarComboSubAlmacen);
	$("#cmb_almacen").load(llenarComboSubAlmacen);
	// fin eventos change

	// calendario
	$('input.fecha_orden').datepicker();
	// fin calendario

	// ajuste de componentes
	$(".cmb1").width($(".td_izq").width());
	$(".descripciones").width(360);
	$("#td_observaciones>textarea").width($("#td_observaciones").width());
	$(".panel_proyecto").hide();
	// fin ajuste de componentes

	// eventos click
	//$('#add_tool').click(showPedidosAceptados);
	$("#cmb_tipo").change(muestraUbicacionEntrega);
	$("#cmb_moneda").change(muestraCambioMoneda);
	$("#cmb_impuesto").change(obtieneImpuesto);
	
	// eventos click

	// eventos key
	$('#desc_proveedor').keyup(limpiaCodProveedor);
	$('#ruc_proveedor').keyup(buscaProveedor);
	$('input').keyup(convierteMayusculas);
	//$('textarea').keyup(convierteMayusculas);
	// fin eventos key

});

/*----------funciones------------*/

function convierteMayusculas(){
	$(this).val($(this).val().toUpperCase());
}

function pruebaDialogo(){
		 $(function ()    {
			$('<div>').dialogr({
				open: function ()
				{
					//$(this).html('luis');
					$(this).load("frmConsultarAjustePresupuestal.htm");  
				},         
				minHeight: 140, minWidth: 310, height: 160, width: 400, 
				title: 'Consulta Presupuestal'
			});
		});
}

function cierraDialogoConsolida(){
	$.unblockUI();	
}

function redondear(cantidad, decimales) {
	 var cantidad = parseFloat(cantidad);
	 var decimales = parseFloat(decimales);
	 decimales = (!decimales ? 2 : decimales);
	 return Math.round(cantidad * Math.pow(10, decimales)) / Math.pow(10, decimales);
} 

function sumaSubTotales(){
		//var mes_cantidad=$(this).val();
		var suma = 0;
		$.each(detalle_orden, function(j){
			num = (isNaN(parseFloat($("#precio_"+j).val())))?0:parseFloat($("#precio_"+j).val());
			//$("#precio_"+j).val(num);
			this.precio =num;
			this.valor = redondear(num * this.cantidad,2);
			$('#sub_total_'+j).val(this.valor);
			suma+=this.valor;
	      });
		$('#sub_total_orden').html(redondear(suma));
		obtieneImpuesto();
		monto_redondeo = 0;
	}
function sumaPrecioTotales(){
	
	//var mes_cantidad=$(this).val();
	var suma = 0;
	$.each(detalle_orden, function(j){
		num = (isNaN(parseFloat($("#sub_total_"+j).val())))?0:parseFloat($("#sub_total_"+j).val());
		//$("#sub_total_"+j).val(redondear(num,2));
		//$("#precio_"+j).val(num);
		this.valor =num;
		this.precio = redondear(num / this.cantidad,7);
		$('#precio_'+j).val(this.precio);
		suma+=this.valor;
      });
	$('#sub_total_orden').html(redondear(suma));
	obtieneImpuesto();
	
}
function sumaTotales(){
	
	var sub_total = parseFloat($("#sub_total_orden").html());
	var monto_impuestos =parseFloat($("#monto_impuesto").html());
	//var monto_otros=parseFloat($("#monto_otros").val());
	//var monto_total = 	redondear(sub_total+monto_impuestos+monto_otros);
	var monto_total = 	redondear(sub_total+monto_impuestos);
	$('#total_orden').html(monto_total); 		
}

function obtieneImpuesto(){
	$.getJSON("get_monto_impuesto", {
		id_plantilla : $("#cmb_impuesto").val(),
		sub_total:parseFloat($("#sub_total_orden").html())
	}, function(rpta) {
		$("#monto_impuesto").html(rpta.respuesta);
		sumaTotales();
	});
}

function creaToolTips() {
	$('#add_tool').bt();

	$('#cod_unidad_org').bt({
		trigger : [ 'focus', 'blur' ],
		positions : [ 'right' ]
	});
}

function llenarComboAlmacen() {
	var zona = $("#cmb_zona").val();
	$("#cmb_almacen").bindComboConAccion("almacen_en_zona",{cod_zona : zona},{id : "codAlmacen",desc:"descripcion"},"llenarComboSubAlmacen");
	limpiaDatos();
}

function llenarComboSubAlmacen() {
	var almacen = $("#cmb_almacen").val();
	$("#cmb_ubicacion").bindCombo("subalmacen_en_almacen",{cod_almacen : almacen},{id : "codigo",desc:"descripcion"});
}

function muestraUbicacionEntrega() {
	if ($.trim($("#cmb_tipo option:selected").html())=="SERVICIOS") {	
		$("#para_ubicacion").fadeOut("slow");

	} else {
		$("#para_ubicacion").fadeIn("slow");
	}
	limpiaDatos();
}

function muestraCambioMoneda() {
	if ($.trim($("#cmb_moneda option:selected").html())=="SOLES") {	
		$(".cambio_moneda").fadeOut("slow");

	} else {
		$(".cambio_moneda").fadeIn("slow");
	}
}

function muestraEncargo() {
	if ($("#chk_encargo").attr("checked")) {
		$("#cmb_empresa").removeAttr("disabled");
		opcion = "no_principal";
	} else {
		$("#cmb_empresa").attr("disabled", "disabled");
		opcion = "principal";
	}
	$("#cmb_empresa").bindCombo("get_empresas",{opcion : opcion},{id : "id_empresa",desc:"razon"});

}

function limpiaCodProveedor(e) {
	if (e.keyCode != 13) {
		$('#ruc_proveedor').val("");
	}
}

function limpiaCodCentroCosto(e) {
	if (e.keyCode != 13) {
		$('#cod_centro_costo').val("");
	}
}

function buscaProveedor(e) {
	// alert(e.keyCode);

	$('#desc_proveedor').val("");

	if (e.keyCode == 13) {
		this.blur();

		if ($(this).val().length > 0) {
			$.getJSON("getProveedor",
							{
								cod_proveedor : $(this).val()
							},
							function(data) {	
								if (data.razon != null) {
									$('#desc_proveedor').focus();
									$('#desc_proveedor').attr("value",
											$.trim(data.razon));
								}

								else {
									Utiles_MensajesDialogo.showMensajeAlerta("El proveedor no existe");
									$('#ruc_proveedor').val("");
								}

							});
		}

	}
}

function showPedidosConsolida() {
	if(detalles_consolidado.length==0){
	
		$.getJSON("get_detalles_pedido_consolida",{id_empresa:$("#cmb_empresa").val(),tipo_orden:$("#cmb_tipo").val()}, function(data) {
			detalles_consolidado = data;
			llenaTablaConsolidado();
			$.blockUI({
				message : $('#dialogConsolida'),
				theme : true,
				title : 'Consolidado de Pedidos',
				draggable : true,
				themedCSS : {
					top : '10%',
					left : ($(window).width() - 790) / 2 + 'px',
					width : '790px',
					textAlign : 'left',
					cursor : 'default'
				}
			});
		});
	}
	else{
		
		$.blockUI({
			message : $('#dialogConsolida'),
			theme : true,
			title : 'Consolidado de Pedidos',
			draggable : true,
			themedCSS : {
				top : '10%',
				left : ($(window).width() - 790) / 2 + 'px',
				width : '790px',
				textAlign : 'left',
				cursor : 'default'
			}
		});
	}
	/*else
		llenaTablaConsolidado();*/
	
}


function llenaTablapRUEBA(){
	$("#tbconsolida>tbody>tr.data").remove();
	$("#tbconsolida>colgroup").remove();
	$.each(detalles_consolidado, function(i) {
		cadena = "<tr class='data'>";
        cadena = cadena + "<td>" +this.desc_suministro + "</td>";
        cadena = cadena + "<td>" +this.cod_pedido + "</td>";
        cadena = cadena + "<td>" +this.zona + "</td>";
        cadena = cadena + "<td>" +this.localidad+"</td>";
        cadena = cadena + "<td>" +this.cantidad+"</td>";
        cadena = cadena + "<td>" +this.unidadOrganizativa+"</td>";
        cadena = cadena + "<td>" +this.centrocosto+"</td>";
        cadena = cadena + "<td>" +this.id_cod_presupuestal+"</td>";
        cadena = cadena + "<td>" +this.observacion+"</td>";
        cadena = cadena + "<td align='center'><a class='envia_detalle_consolidado' onclick=\"enviaDetalleConsolidadoAOrden(this,'"+this.cod_pedido+"','"+this.id_suministro+"')\"><img src='"+$("#contexto_spring").attr("title")+"images/folder_inbox.png' style='cursor: pointer' title='Enviar a Orden' /></a>&nbsp;</td></tr>";
        $("#tbconsolida").append(cadena);

	});
	//$(".tablesorter").trigger("update"); 
	$("#tbconsolida") 
	 .tablesorter({widthFixed: true, widgets: ['zebra']})
	 .tablesorterPager({container: $("#pagerConsolida"),size:5,contruirBtn:false})
	 .tablesorterFilter({filterContainer: $("#filter-box1"),
	    // filterClearContainer: $("#filter-clear-button"),
	     filterColumns: [0,1,2,3,4,5],
	     filterCaseSensitive: false,
	     filterWaitTime :200});
}

function llenaTablaConsolidado(){
	//$("#tb_sumi").html("");
	$("#tbconsolida>tbody>tr.data").remove();
	$("#tbconsolida>colgroup").remove();
	$.each(detalles_consolidado, function(i) {
		cadena = "<tr class='data'>";
        cadena = cadena + "<td>" +this.desc_suministro + "</td>";
        cadena = cadena + "<td>" +this.cod_pedido + "</td>";
        cadena = cadena + "<td>" +this.zona + "</td>";
        cadena = cadena + "<td>" +this.localidad+"</td>";
        cadena = cadena + "<td>" +this.cantidad+"</td>";
        cadena = cadena + "<td>" +this.unidadOrganizativa+"</td>";
        cadena = cadena + "<td>" +this.centrocosto+"</td>";
        cadena = cadena + "<td>" +this.id_cod_presupuestal+"</td>";
        cadena = cadena + "<td>" +this.observacion+"</td>";
        cadena = cadena + "<td align='center'><a class='envia_detalle_consolidado' onclick=\"enviaDetalleConsolidadoAOrden(this,'"+this.cod_pedido+"','"+this.id_suministro+"')\"><img src='"+$("#contexto_spring").attr("title")+"images/folder_inbox.png' style='cursor: pointer' title='Enviar a Orden' /></a>&nbsp;</td></tr>";
        $("#tbconsolida").append(cadena);

	});
	//$(".tablesorter").trigger("update"); 
	$("#tbconsolida") 
	 .tablesorter({widthFixed: true, widgets: ['zebra']})
	 .tablesorterPager({container: $("#pagerConsolida"),size:5,contruirBtn:(num_ordenes==0)?true:false})
	 .tablesorterFilter({filterContainer: $("#filter-box1"),
	    // filterClearContainer: $("#filter-clear-button"),
	     filterColumns: [0,1,2,3,4,5],
	     filterCaseSensitive: false,
	     filterWaitTime :200});
}

function isExisteSumiEnDetalle(cod_pedido,id_suministro){

	$.each(detalle_orden, function(i,item) {
		if( $.trim(this.pedido)==cod_pedido && $.trim(this.id_suministro)==id_suministro){
			detalle_orden.splice(i,1);
			return true;
		}
	});
	return false;
}

function eliminaDetalleConsolidado(elemento,cod_pedido,id_suministro){
	
	$(elemento).parent().parent().remove();
	$.each(detalles_consolidado, function(i,item) {
		//alert($.trim(this.cod_pedido)+"---"+$.trim(this.id_suministro)+"---"+cod_pedido+"---"+ id_suministro+"---");
		if( $.trim(this.cod_pedido)==cod_pedido && $.trim(this.id_suministro)==id_suministro){
			detalles_consolidado.splice(i,1);
			llenaTablapRUEBA();
			/*$("#tbconsolida").trigger("update");
			$("#tbconsolida").trigger("appendCache");
			$("#tbconsolida").trigger("filterCleared");*/
			return false;
		}
	});
}
function enviaDetalleConsolidadoAOrden(elemento,cod_pedido,id_suministro){
	eliminaDetalleConsolidado(elemento,$.trim(cod_pedido),$.trim(id_suministro));
	if(!isExisteSumiEnDetalle($.trim(cod_pedido),$.trim(id_suministro))){
		$.get("get_detalle_pedido_consolidado_a_orden", { cod_pedido: cod_pedido,id_suministro:id_suministro }, function(data) {	
			 var detalle_consolidado = data;
			 detalle_orden[detalle_orden.length]=detalle_consolidado;
			 //$("#tb_detalle_orden>tbody>tr.data").remove();
			 cadena = "<tr class='data'>";
			 	cadena = cadena + "<td>" +detalle_consolidado.pedido + "</td>";
		        cadena = cadena + "<td>" +detalle_consolidado.id_suministro + "</td>";
		        cadena = cadena + "<td>" +detalle_consolidado.suministro + "</td>";
		        cadena = cadena + "<td>" +detalle_consolidado.unidad + "</td>";
		        cadena = cadena + "<td>" +detalle_consolidado.cantidad+"</td>";
		        cadena = cadena + "<td> <input type='text' size='10' id='precio_"+(detalle_orden.length-1)+"' value='"+detalle_consolidado.precio+"'/></td>";
		        cadena = cadena + "<td> <input type='text' size='10' id='sub_total_"+(detalle_orden.length-1)+"' value='"+detalle_consolidado.valor+"'/></td>";
		        //cadena = cadena + "<td style='text-align:right'> <span id='sub_total_"+(detalle_orden.length-1)+"'>" +"</td>";
		        cadena = cadena + "</tr>";
		        //cadena = cadena + "<td align='center'><a class='edita'><img src='<c:url value='/images/page_edit.png' />' style='cursor: pointer' /></a>&nbsp;<a class='elimina'><img src='<c:url value='/images/delete.png' />' style='cursor: pointer' /></a></td></tr>";
		        $("#tb_detalle_orden").append(cadena);
		        $("#precio_"+(detalle_orden.length-1)).keyup(sumaSubTotales);
		        $("#sub_total_"+(detalle_orden.length-1)).keyup(sumaPrecioTotales);
		        sumaSubTotales();
		 }); 
	}
	else
		alert("existe");

}

function showPedidosAceptados() {
	//$("#add_tool").deshabilitaButton();
	Utiles_MensajesDialogo.showRequestDialog3("Pedidos Para Orden", "jdPedidosAceptados", 790, {id_empresa:$("#cmb_empresa").val(),id_zona:$("#cmb_zona").val(),tipo_orden:$("#cmb_tipo").val()});
}

function enviaOrden() {
		
	if ($("#ordenForm").valid()) {
		
		var fecha = $("#fec_emision").val().split("/");
		if($("#anio_actual").html()!=fecha[2] || $("#mes_actual").html()!=fecha[1]){
			Utiles_MensajesDialogo.showMensajeAlerta("La fecha debe coincidir con el mes actual: " + $("#anio_actual").html() + " - " + $("#mes_actual").html());
			return;
		}
		Utiles_MensajesDialogo.showMensajeConfirmacion("Desea Guardar la Orden??",function(result){
			if(result=="Si"){
				var fields = $("#ordenForm").serializeObject();
				fields.valor_total=parseFloat($("#sub_total_orden").html());
				fields.monto_otros=	monto_redondeo;	

				fields.valor_impuesto=parseFloat($("#monto_impuesto").html());
				var obj = new Object();
				obj.detalle = detalle_orden;
				fields.detalle = obj;
				//$(document).ajaxStart(function(){ 
				 $.blockUI({ 
			            centerY: 0, 
			            message: "<h1>Espere un momento!!</h1>",
			            css: { top: '10px', left: '', right: '10px' } 
			        }); 
				//});
				$.postJSON("guardar_orden", fields, function(rpta) {
					$.unblockUI();
					if(rpta.respuesta==true){
						Utiles_MensajesDialogo.showMensajeInfo("Se ha girado satisfactoriamente la Orden N: " +rpta.mensaje);
						var tipo_compra = false;
						tipo_compra = ($.trim($("#cmb_tipo option:selected").html())=="COMPRA")?true:false;
						num_ordenes++;
						limpiaFormulario();
						
						 $.getJSON("envia_email_orden", {
								codigo : rpta.mensaje,
								tipo_compra:tipo_compra
							}, function(rpta_email) {
								if(rpta_email.respuesta==true){
									Utiles_MensajesDialogo.showMensajeInfo(rpta_email.mensaje);
								}
								else
									Utiles_MensajesDialogo.showMensajeError(rpta_email.mensaje);
								document.location.target='_new';
								document.location.href="ver_reporte_orden?codigo="+rpta.mensaje+"&tipo_compra="+tipo_compra+"&op_visualiza=1";
						});
						 
						
						
						//$(location).attr("target","_blank");
						//$(location).attr("href","ver_reporte_orden?codigo=C00120110100001");
					}
					else
						Utiles_MensajesDialogo.mensajeError("ERROR PRESUPUESTAL",rpta.mensaje);

				});
			}
			else{
				
			}
		});

	}
	
}

function limpiaDatos(){
	monto_redondeo = 0;
	detalle_orden = new Array();
	detalles_consolidado = new Array();
	$("#sub_total_orden").html("0.00");
	$("#monto_impuesto").html("0.00");
	//$("#monto_otros").val("0.00");
	$('#total_orden').html("0.00");

	$("#tb_detalle_orden>tbody>tr.data").remove();
}

function limpiaFormulario(){
	$("#ordenForm").reset();
	$("#para_ubicacion").fadeIn("slow");
	limpiaDatos();
}

function agregaRedondeo(){
	if(monto_redondeo < MONTO_REDONDEO_MAX){
		var monto_impuestos =parseFloat($("#monto_impuesto").html());
		if(monto_impuestos > 0){
			monto_redondeo = redondear(monto_redondeo+0.01);
			monto_impuestos	= redondear(monto_impuestos + 0.01);
			$("#monto_impuesto").html(monto_impuestos);
			sumaTotales();
		}
	}
	
}

function restaRedondeo(){
	if(monto_redondeo > (MONTO_REDONDEO_MAX*-1)){
		var monto_impuestos =parseFloat($("#monto_impuesto").html());
		if(monto_impuestos > 0){
			monto_redondeo = redondear(monto_redondeo - 0.01);
			monto_impuestos	= redondear(monto_impuestos - 0.01);
			$("#monto_impuesto").html(monto_impuestos);
			sumaTotales();
		}
	}
		
}

function recibeProveedor(e, item){
	$("#ruc_proveedor").val($.trim(item.codProveedor));
	$("#desc_proveedor").val($.trim(item.razon));	
}

/*----------fin funciones------------*/

